|
 |
Programmazione |
TECNICHE D'INTERRUZIONE
[30 di 166] |
 | Sebbene la porta parallela sia in genere usata
in polling (cioè richieda l'assistenza
continua del processore nelle fasi di lettura delle sue linee d'ingresso)
l'interfaccia posta all'interno del computer prevede la possibilità di generare
dall'esterno un segnale in grado di interrompere
la cpu. |
 | L'uso della
parallela sotto interruzione
nella gestione di
una stampante è descritto in questa pagina,
tecnica di interruzione. |
 | Difficilmente i
driver delle stampanti gestiscono la
porta da cui dipendono con tecnica di INT,
ma è detto che non possa
tornar utile nell'uso libero della
porta stessa. |
 | Osservando l'interfaccia della porta parallela
possiamo concludere che qualunque dispositivo
esterno è autorizzato ad interrompere il processore solo se il
bit4
del
Registro di controllo (uscita) 037AH/027AH
(realizzato dall'integrato 74LS174,
contenente 6 latch
D-type) è stato programmato a 1; altrimenti le
eventuali richieste di interruzione sono disabilitate. |
 | Il sistema riserva alla porta parallela
2 livelli di interruzione: la IRQ7 per
la porta LPT1, 0378H/03BCH
e la IRQ5 per la porta LPT2,
0278H. |
 | Se l'interruzione è abilitata e la richiesta
è arrivata da IRQ7 la CPU fa partire la
procedura di servizio INT 0FH; se invece
è arrivata da IRQ5 la procedura di
servizio è la INT 0DH.
|
 |
è curioso osservare che anche la linea interna usata per
controllare
l'abilitazione a interrompere la Cpu
sulla linea IRQ7 è
monitorabile facendo un In sul
bit4 del
Registro di controllo (uscita) 037AH/027AH
usato in lettura, in modo
assolutamente improprio per soli fini diagnostici.
|
 | Se il nostro dispositivo esterno è
autorizzato ad interrompere (bit4
di 037AH/027AH
a 1) la linea che
arriva al pin 10 del connettore
viene fisicamente collegata internamente alla linea
IRQ7. |
 | Il nostro dispositivo esterno può
dunque interrompere il processore fornendo un breve impulso basso
(almeno 5 microsecondi) sul pin
10 del connettore; esso
viene internamente copiato su IRQ7 e,
non appena torna a 1 (cioè sul fronte di
salita) il controllore
delle interruzioni 8259 attiva il
servizio dell'interruzione. |
 | Possiamo notare che la linea interna collegata
al pin 10 del connettore
è bufferizzata da un inverter invertente trigger di Shmitt (1/6 di 74LS14),
a valle del quale:
 | viene di nuovo invertita dal
Registro d'ingresso 0379H/0279H e resa monitorabile (in polling) sul suo
bit6. |
 | viene controllata da un buffer non
invertente three-state (1/4 di 74LS125):
se osserva che:
 | se le interruzioni non sono
autorizzate (bit4
del Registro 037AH/027AH a
0) la linea IRQ7
è a 1 per effetto del resistore da 4,7k;
se non ci fosse questo resistore la linea sarebbe pericolosamente fluttuante
(cioè scollegata) dato che
l'uscita del buffer è in condizioni di alta impedenza. |
 | se invece è possibile interrompere
via porta parallela (bit4
del Registro 037AH/027AH a
1)
è possibile controllare la linea IRQ7 direttamente dalla
porta parallela (attraverso il suo pin 10). |
|
|
 | Le considerazioni fin qui prodotte
valgono in generale; può tornar utile sottolineare, peraltro, che le porte EPP
sono in grado di gestire un segnale dedicato esplicitamente alla richiesta
interruzioni, InterruptReq,
disponibile ancora sul pin
10 del connettore, la dove la SPP
riceveva il segnale Acknowledge,
per cui in effetti non cambia nulla. |
©
2001-2006 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|